🏠 API de UsuarioEnderecos - Documentação Completa
📋 Visão Geral
A API de UsuarioEnderecos é responsável por toda a gestão de endereços dos usuários no sistema CordenaAi, incluindo cadastro, atualização, consulta e exclusão de endereços residenciais, comerciais e outros tipos. Esta API fornece a base para localização e contato dos usuários, permitindo a organização de dados geográficos e facilitando a comunicação e logística.
🎯 Endpoints Disponíveis
🏠 UsuarioEnderecos - Gestão de Endereços de Usuários
1. GET /api/UsuarioEnderecos/usuario/{usuarioId}
Listar Endereços por Usuário
- Descrição: Retorna todos os endereços associados a um usuário específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
usuarioId (path): ID único do usuário
- Resposta: Array de objetos UsuarioEnderecoReadDto
- Uso: Interface do usuário para visualizar seus endereços, formulários de cadastro
2. GET /api/UsuarioEnderecos/{id}
Obter Endereço por ID
- Descrição: Retorna dados completos de um endereço específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do endereço
- Resposta: Objeto UsuarioEnderecoReadDto completo
- Uso: Visualização de detalhes de endereço, edição de dados
3. POST /api/UsuarioEnderecos
Criar Endereço
- Descrição: Cria novo endereço para um usuário
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto UsuarioEnderecoCreateDto
- Resposta: Objeto UsuarioEnderecoReadDto criado
- Uso: Cadastro de novos endereços, formulários de registro
4. PUT /api/UsuarioEnderecos/{id}
Atualizar Endereço
- Descrição: Atualiza dados de um endereço existente
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do endereço
- Body: Objeto UsuarioEnderecoUpdateDto
- Resposta: Objeto UsuarioEnderecoReadDto atualizado
- Uso: Alteração de dados de endereço, correção de informações
5. DELETE /api/UsuarioEnderecos/{id}
Excluir Endereço
- Descrição: Remove endereço do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do endereço
- Resposta: 204 No Content
- Uso: Remoção de endereços obsoletos, limpeza de dados
🔧 Modelo de Dados
UsuarioEndereco
CreateDto (Criação)
{
"usuarioId": "string",
"enderecoResponsavelId": "string",
"cep": "string",
"endereco": "string",
"numero": "string",
"complemento": "string",
"bairro": "string",
"cidade": "string",
"estado": "string",
"tipo": 1
}
UpdateDto (Atualização)
{
"usuarioId": "string",
"enderecoResponsavelId": "string",
"cep": "string",
"endereco": "string",
"numero": "string",
"complemento": "string",
"bairro": "string",
"cidade": "string",
"estado": "string",
"tipo": 1
}
ReadDto (Consulta)
{
"id": 1,
"usuarioId": "string",
"usuarioNome": "string",
"enderecoResponsavelId": "string",
"enderecoResponsavelNome": "string",
"cep": "01234-567",
"endereco": "Rua das Flores",
"numero": "123",
"complemento": "Apto 45",
"bairro": "Centro",
"cidade": "São Paulo",
"estado": "SP",
"tipo": 1,
"dataCadastro": "2025-01-15T10:30:00Z",
"dataAtualizacao": "2025-01-15T10:30:00Z"
}
Tipos de Endereço
{
"TipoEndereco": {
"Residencial": 1,
"Comercial": 2,
"Outro": 3
}
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Gestores: Acesso aos endereços de usuários sob sua responsabilidade
- Usuários: Acesso limitado aos seus próprios endereços
- Responsáveis: Acesso aos endereços dos usuários sob sua responsabilidade
📊 Casos de Uso Principais
1. Cadastro de Endereço Residencial
POST /api/UsuarioEnderecos
Content-Type: application/json
Authorization: Bearer {token}
{
"usuarioId": "user-guid-here",
"enderecoResponsavelId": "responsible-guid-here",
"cep": "01234-567",
"endereco": "Rua das Flores",
"numero": "123",
"complemento": "Apto 45",
"bairro": "Centro",
"cidade": "São Paulo",
"estado": "SP",
"tipo": 1
}
2. Consulta de Endereços por Usuário
GET /api/UsuarioEnderecos/usuario/user-guid-here
Authorization: Bearer {token}
3. Atualização de Endereço
PUT /api/UsuarioEnderecos/1
Content-Type: application/json
Authorization: Bearer {token}
{
"usuarioId": "user-guid-here",
"enderecoResponsavelId": "responsible-guid-here",
"cep": "01234-567",
"endereco": "Rua das Flores",
"numero": "123",
"complemento": "Apto 45",
"bairro": "Centro",
"cidade": "São Paulo",
"estado": "SP",
"tipo": 1
}
4. Consulta de Endereço Específico
GET /api/UsuarioEnderecos/1
Authorization: Bearer {token}
5. Exclusão de Endereço
DELETE /api/UsuarioEnderecos/1
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- UsuarioId: Obrigatório, deve existir no sistema
- Cep: Obrigatório, máximo 10 caracteres, formato válido
- Endereco: Obrigatório, máximo 200 caracteres
- Numero: Obrigatório, máximo 20 caracteres
- Bairro: Obrigatório, máximo 100 caracteres
- Cidade: Obrigatório, máximo 100 caracteres
- Estado: Obrigatório, máximo 2 caracteres (UF)
- Tipo: Obrigatório, deve ser válido (1=Residencial, 2=Comercial, 3=Outro)
Validações Opcionais
- EnderecoResponsavelId: Opcional, deve existir no sistema se informado
- Complemento: Opcional, máximo 100 caracteres
Regras de Negócio
- Endereço principal: Apenas um endereço pode ser marcado como principal por usuário
- Validação de CEP: Formato brasileiro (XXXXX-XXX)
- Integridade referencial: Não é possível excluir usuário com endereços ativos
- Soft Delete: Endereços inativados não são excluídos permanentemente
- Auditoria: Todas as operações são logadas
- Ordenação: Listas são ordenadas por tipo e data de cadastro
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 204: Excluído com sucesso
- 400: Dados inválidos
- 401: Não autorizado
- 403: Acesso negado
- 404: Recurso não encontrado
- 409: Conflito (endereço principal já existe)
- 422: Erro de validação
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam máximo 50 registros por página
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
- Tamanho máximo: 1MB por requisição
Otimizações
- Cache: Dados de endereços são cacheados por 5 minutos
- Índices: Busca otimizada por usuário, CEP e cidade
- Compressão: Respostas comprimidas com gzip
- Lazy Loading: Dados de responsáveis são carregados sob demanda
🔄 Integração com Outros Módulos
Módulos Relacionados
- Usuários: Associação obrigatória com usuário
- Responsáveis: Contexto de responsabilidade por endereço
- Instituições: Localização geográfica para unidades
- Turmas: Proximidade geográfica para formação de turmas
- Relatórios: Dados para análises geográficas
- Mapas: Integração com serviços de geolocalização
📱 Uso em Aplicações
Web App
- Formulários de cadastro de usuários
- Interface de gestão de endereços
- Relatórios por localização geográfica
- Mapa de distribuição de usuários
- Configuração de endereços para responsáveis
Mobile App
- Cadastro de endereço durante registro
- Atualização de localização
- Busca por proximidade geográfica
- Navegação para endereços cadastrados
- Validação de CEP em tempo real
🛠️ Manutenção e Monitoramento
Logs Importantes
- Criação de novos endereços
- Alterações de endereços existentes
- Tentativas de acesso não autorizado
- Erros de validação de CEP
- Exclusões de endereços
Métricas Monitoradas
- Número de endereços por usuário
- Distribuição geográfica por cidade/estado
- Taxa de sucesso das operações
- Tempo de resposta dos endpoints
- Uso de recursos por endpoint
📚 Exemplos Práticos
Fluxo Completo de Cadastro de Endereço
- Validar CEP via serviço externo
- Criar endereço via
POST /api/UsuarioEnderecos
- Verificar endereço criado via
GET /api/UsuarioEnderecos/{id}
- Listar endereços do usuário via
GET /api/UsuarioEnderecos/usuario/{usuarioId}
- Atualizar se necessário via
PUT /api/UsuarioEnderecos/{id}
Fluxo de Gestão por Responsável
- Listar endereços via
GET /api/UsuarioEnderecos/usuario/{usuarioId}
- Filtrar por tipo no frontend
- Editar endereço via
PUT /api/UsuarioEnderecos/{id}
- Excluir endereço obsoleto via
DELETE /api/UsuarioEnderecos/{id}
- Verificar alterações via
GET /api/UsuarioEnderecos/{id}
Fluxo de Validação de CEP
- Capturar CEP no formulário
- Validar formato no frontend
- Consultar serviço de CEP (opcional)
- Preencher campos automaticamente
- Salvar endereço via
POST /api/UsuarioEnderecos
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi